/**
 * Object.prototype.toString.call()
 * * toString() 是 Object 的原型方法，调用该方法，默认返回当前对象的 [[Class]] 。
 * * 这是一个内部属性，其格式为 [object Xxx] ，其中 Xxx 就是对象的类型。
 * * 对于 Object 对象，直接调用 toString()  就能返回 [object Object] 。
 * * 而对于其他对象，则需要通过 call / apply 来调用才能返回正确的类型信息。
 */


let _is = (...arg) => {
  // return Object.prototype.toString.call(variate)
  // console.log(arg.length);
  let length = arg.length
  if (length == 1) {
    console.log(Object.prototype.toString.call(arg[0]));
  } else {
    for (let i of arg) {
      console.log(Object.prototype.toString.call(i));
    }
  }
  // console.log(Object.prototype.toString.call(variate));  
}

// obj
let obj = { name: 'mike', age: '19', }
let arr = [1, 2, 3, 5, 8, 6, 0, 9]
let str = "string"
let num = 123
let nul = null
let undefine = undefined
let sym = Symbol('symVariate')
_is(obj, arr, str, num, nul, undefine, sym)
_is(new String(), new Number(), new RegExp(), new Date(), new Boolean(), new Function())


/**
 * 
 * [object Object]
   [object Array]
   [object String]
   [object Number]
   [object Null]
   [object Undefined]
   [object Number]
   [object RegExp]
   [object Date]
   [object Boolean]
   [object Function]
 */